<?php
/*
 * 指定情報をHASHもしくはMHASH変換して、２８文字の文字列にする。
 * 結果はJSON形式として返却する。
 * 
 * (C) 2009, Mezawa Takuji.
 */

$algos  = $_POST['algos'];      // HASH変換用アルゴリズム
$userId = $_POST['userid'];     // ユーザーID
$passwd = $_POST['passwd'];     // パスワード

// 指定ユーザーIDをMD5で暗号化し、8ビットデータをHEXで得る。
// ・・・MHASH関数のsalt値として精度を確保する。
//$salt8bit = substr(pack("h*", md5($userId)), 0, 8);

// 指定パスワードを使ってハッシュ値を得る。
// ユーザーIDに対応する暗号値は指定パスワードと関係する。
//$hash = mhash_keygen_s2k(MHASH_MD5, $passwd, $salt8bit, 14);


// 指定ユーザーIDでHASH変換する。HASH変換に使用するアルゴリズムは指定されたものを
// 使用する。HASH変換した値を文字列化して、２８文字分だけ抽出する。
$hash = substr(pack("A*", hash($algos, $userId)), 0, 28);

// 結果返却の準備
$res = array("hash"=>$hash, "len"=>strlen($hash));

// 結果をJSON形式で返却する
print json_encode($res);
?>